home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Resources / Online / Term / Extras / Source / term-source.lha / PathPanel.c < prev    next >
C/C++ Source or Header  |  1996-10-20  |  11KB  |  446 lines

  1. /*
  2. **    PathPanel.c
  3. **
  4. **    Editing panel for path configuration
  5. **
  6. **    Copyright © 1990-1996 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. **
  9. **    :ts=4
  10. */
  11.  
  12. #ifndef _GLOBAL_H
  13. #include "Global.h"
  14. #endif
  15.  
  16. enum    {    GAD_AUPLOAD=1000,GAD_ADOWNLOAD,GAD_TUPLOAD,GAD_TDOWNLOAD,
  17.             GAD_BUPLOAD,GAD_BDOWNLOAD,GAD_CONFIGSTORE,GAD_EDITOR,GAD_HELPFILE,
  18.  
  19.             GAD_USE,GAD_CANCEL,
  20.             GAD_PAGER,GAD_PAGEGROUP
  21.         };
  22.  
  23. BOOL
  24. PathPanel(struct Window *Parent,struct Configuration *LocalConfig)
  25. {
  26.     STATIC LONG PageTitleID[5] =
  27.     {
  28.         MSG_V36_0123,
  29.         MSG_V36_0122,
  30.         MSG_V36_0121,
  31.         MSG_V36_0124,
  32.         -1
  33.     };
  34.  
  35.     STATIC BYTE InitialPage = 0;
  36.  
  37.     struct LayoutHandle    *Handle;
  38.     BOOL UseIt;
  39.  
  40.     UseIt = FALSE;
  41.  
  42.     SaveConfig(LocalConfig,PrivateConfig);
  43.  
  44.     if(Handle = LT_CreateHandleTags(Parent->WScreen,
  45.         LAHN_LocaleHook,    &LocaleHook,
  46.         LAHN_ExitFlush,    FALSE,
  47.     TAG_DONE))
  48.     {
  49.         struct Window *PanelWindow;
  50.  
  51.         LT_New(Handle,
  52.             LA_Type,    VERTICAL_KIND,
  53.         TAG_DONE);
  54.         {
  55.             LT_New(Handle,
  56.                 LA_Type,VERTICAL_KIND,
  57.             TAG_DONE);
  58.             {
  59.                 LT_New(Handle,
  60.                     LA_Type,        TAB_KIND,
  61.                     LA_ID,            GAD_PAGER,
  62.                     LA_LabelID,        MSG_XFER_PAGE_TXT,
  63.                     LACY_LabelTable,PageTitleID,
  64.                     LACY_AutoPageID,GAD_PAGEGROUP,
  65.                     LACY_TabKey,    TRUE,
  66.                     LA_BYTE,        &InitialPage,
  67.                     LATB_FullWidth,    TRUE,
  68.                 TAG_DONE);
  69.  
  70.                 LT_EndGroup(Handle);
  71.             }
  72.  
  73.             LT_New(Handle,
  74.                 LA_Type,        VERTICAL_KIND,
  75.                 LA_ID,            GAD_PAGEGROUP,
  76.                 LAGR_ActivePage,InitialPage,
  77.             TAG_DONE);
  78.             {
  79.                 LT_New(Handle,
  80.                     LA_Type,    VERTICAL_KIND,
  81.                 TAG_DONE);
  82.                 {
  83.                     LT_New(Handle,
  84.                         LA_Type,        STRING_KIND,
  85.                         LA_LabelID,        MSG_PATHPANEL_DEFAULT_BINARY_UPLOAD_PATH_GAD,
  86.                         LA_ID,            GAD_BUPLOAD,
  87.                         LA_Chars,        20,
  88.                         LAST_Picker,    TRUE,
  89.                         GTST_MaxChars,    sizeof(PrivateConfig->PathConfig->BinaryUploadPath) - 1,
  90.                         LA_STRPTR,        PrivateConfig->PathConfig->BinaryUploadPath,
  91.                     TAG_DONE);
  92.  
  93.                     LT_New(Handle,
  94.                         LA_Type,        STRING_KIND,
  95.                         LA_ID,            GAD_BDOWNLOAD,
  96.                         LA_LabelID,        MSG_PATHPANEL_DEFAULT_BINARY_DOWNLOAD_PATH_GAD,
  97.                         LAST_Picker,    TRUE,
  98.                         GTST_MaxChars,    sizeof(PrivateConfig->PathConfig->BinaryDownloadPath) - 1,
  99.                         LA_STRPTR,        PrivateConfig->PathConfig->BinaryDownloadPath,
  100.                     TAG_DONE);
  101.  
  102.                     LT_EndGroup(Handle);
  103.                 }
  104.  
  105.                 LT_New(Handle,
  106.                     LA_Type,        VERTICAL_KIND,
  107.                 TAG_DONE);
  108.                 {
  109.                     LT_New(Handle,
  110.                         LA_Type,        STRING_KIND,
  111.                         LA_LabelID,        MSG_PATHPANEL_DEFAULT_TEXT_UPLOAD_PATH_GAD,
  112.                         LA_ID,            GAD_TUPLOAD,
  113.                         LA_Chars,        20,
  114.                         LAST_Picker,    TRUE,
  115.                         GTST_MaxChars,    sizeof(PrivateConfig->PathConfig->TextUploadPath) - 1,
  116.                         LA_STRPTR,        PrivateConfig->PathConfig->TextUploadPath,
  117.                     TAG_DONE);
  118.  
  119.                     LT_New(Handle,
  120.                         LA_Type,        STRING_KIND,
  121.                         LA_ID,            GAD_TDOWNLOAD,
  122.                         LA_LabelID,        MSG_PATHPANEL_DEFAULT_TEXT_DOWNLOAD_PATH_GAD,
  123.                         LAST_Picker,    TRUE,
  124.                         GTST_MaxChars,    sizeof(PrivateConfig->PathConfig->TextDownloadPath) - 1,
  125.                         LA_STRPTR,        PrivateConfig->PathConfig->TextDownloadPath,
  126.                     TAG_DONE);
  127.  
  128.                     LT_EndGroup(Handle);
  129.                 }
  130.  
  131.                 LT_New(Handle,
  132.                     LA_Type,    VERTICAL_KIND,
  133.                 TAG_DONE);
  134.                 {
  135.                     LT_New(Handle,
  136.                         LA_Type,        STRING_KIND,
  137.                         LA_LabelID,        MSG_PATHPANEL_DEFAULT_ASCII_UPLOAD_PATH_GAD,
  138.                         LA_ID,            GAD_AUPLOAD,
  139.                         LA_Chars,        20,
  140.                         LAST_Picker,    TRUE,
  141.                         GTST_MaxChars,    sizeof(PrivateConfig->PathConfig->ASCIIUploadPath) - 1,
  142.                         LA_STRPTR,        PrivateConfig->PathConfig->ASCIIUploadPath,
  143.                     TAG_DONE);
  144.  
  145.                     LT_New(Handle,
  146.                         LA_Type,        STRING_KIND,
  147.                         LA_ID,            GAD_ADOWNLOAD,
  148.                         LA_LabelID,        MSG_PATHPANEL_DEFAULT_ASCII_DOWNLOAD_PATH_GAD,
  149.                         LAST_Picker,    TRUE,
  150.                         GTST_MaxChars,    sizeof(PrivateConfig->PathConfig->ASCIIDownloadPath) - 1,
  151.                         LA_STRPTR,        PrivateConfig->PathConfig->ASCIIDownloadPath,
  152.                     TAG_DONE);
  153.  
  154.                     LT_EndGroup(Handle);
  155.                 }
  156.  
  157.                 LT_New(Handle,
  158.                     LA_Type,    VERTICAL_KIND,
  159.                 TAG_DONE);
  160.                 {
  161.                     LT_New(Handle,
  162.                         LA_Type,        STRING_KIND,
  163.                         LA_LabelID,        MSG_PATHPANEL_CONFIGURATION_STORAGE_DIR_GAD,
  164.                         LA_ID,            GAD_CONFIGSTORE,
  165.                         LA_Chars,        20,
  166.                         LAST_Picker,    TRUE,
  167.                         GTST_MaxChars,    sizeof(PrivateConfig->PathConfig->DefaultStorage) - 1,
  168.                         LA_STRPTR,        PrivateConfig->PathConfig->DefaultStorage,
  169.                     TAG_DONE);
  170.  
  171.                     LT_New(Handle,
  172.                         LA_Type,        STRING_KIND,
  173.                         LA_ID,            GAD_EDITOR,
  174.                         LA_LabelID,        MSG_PATHPANEL_DEFAULT_TEXT_EDITOR_GAD,
  175.                         LAST_Picker,    TRUE,
  176.                         GTST_MaxChars,    sizeof(PrivateConfig->PathConfig->Editor) - 1,
  177.                         LA_STRPTR,        PrivateConfig->PathConfig->Editor,
  178.                     TAG_DONE);
  179.  
  180.                     LT_New(Handle,
  181.                         LA_Type,        STRING_KIND,
  182.                         LA_ID,            GAD_HELPFILE,
  183.                         LA_LabelID,        MSG_PATHPANEL_HELP_TEXT_FILE_GAD,
  184.                         LAST_Picker,    TRUE,
  185.                         GTST_MaxChars,    sizeof(PrivateConfig->PathConfig->HelpFile) - 1,
  186.                         LA_STRPTR,        PrivateConfig->PathConfig->HelpFile,
  187.                     TAG_DONE);
  188.  
  189.                     LT_EndGroup(Handle);
  190.                 }
  191.  
  192.                 LT_EndGroup(Handle);
  193.             }
  194.  
  195.             LT_New(Handle,
  196.                 LA_Type,VERTICAL_KIND,
  197.             TAG_DONE);
  198.             {
  199.                 LT_New(Handle,
  200.                     LA_Type,        XBAR_KIND,
  201.                     LAXB_FullSize,    TRUE,
  202.                 TAG_DONE);
  203.  
  204.                 LT_EndGroup(Handle);
  205.             }
  206.  
  207.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  208.                 LAGR_SameSize,    TRUE,
  209.                 LAGR_Spread,    TRUE,
  210.             TAG_DONE);
  211.             {
  212.                 LT_New(Handle,
  213.                     LA_Type,        BUTTON_KIND,
  214.                     LA_LabelID,        MSG_GLOBAL_USE_GAD,
  215.                     LA_ID,            GAD_USE,
  216.                     LABT_ReturnKey,    TRUE,
  217.                     LABT_ExtraFat,    TRUE,
  218.                 TAG_DONE);
  219.  
  220.                 LT_New(Handle,
  221.                     LA_Type,        BUTTON_KIND,
  222.                     LA_LabelID,        MSG_GLOBAL_CANCEL_GAD,
  223.                     LA_ID,            GAD_CANCEL,
  224.                     LABT_EscKey,    TRUE,
  225.                     LABT_ExtraFat,    TRUE,
  226.                 TAG_DONE);
  227.  
  228.                 LT_EndGroup(Handle);
  229.             }
  230.  
  231.             LT_EndGroup(Handle);
  232.         }
  233.  
  234.         if(PanelWindow = LT_Build(Handle,
  235.             LAWN_TitleID,        MSG_PATHPANEL_PATH_PREFERENCES_TXT,
  236.             LAWN_HelpHook,        &GuideHook,
  237.             LAWN_Parent,        Parent,
  238.             WA_DepthGadget,        TRUE,
  239.             WA_DragBar,            TRUE,
  240.             WA_RMBTrap,            TRUE,
  241.             WA_Activate,        TRUE,
  242.             WA_SimpleRefresh,    TRUE,
  243.         TAG_DONE))
  244.         {
  245.             struct IntuiMessage    *Message;
  246.             BOOL                 Done = FALSE;
  247.             ULONG                 MsgClass;
  248.             struct Gadget        *MsgGadget;
  249.  
  250.             GuideContext(CONTEXT_PATHS);
  251.  
  252.             PushWindow(PanelWindow);
  253.  
  254.             LT_ShowWindow(Handle,TRUE);
  255.  
  256.             do
  257.             {
  258.                 if(Wait(PORTMASK(PanelWindow->UserPort) | SIG_BREAK) & SIG_BREAK)
  259.                     break;
  260.  
  261.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  262.                 {
  263.                     MsgClass    = Message->Class;
  264.                     MsgGadget    = (struct Gadget *)Message->IAddress;
  265.  
  266.                     LT_ReplyIMsg(Message);
  267.  
  268.                     if(MsgClass == IDCMP_GADGETUP)
  269.                     {
  270.                         switch(MsgGadget->GadgetID)
  271.                         {
  272.                             case GAD_USE:
  273.  
  274.                                 LT_UpdateStrings(Handle);
  275.  
  276.                                 UseIt = Done = TRUE;
  277.                                 break;
  278.  
  279.                             case GAD_CANCEL:
  280.  
  281.                                 Done = TRUE;
  282.                                 break;
  283.  
  284.                             default:
  285.  
  286.                                 if(MsgGadget->GadgetID >= GAD_AUPLOAD && MsgGadget->GadgetID <= GAD_HELPFILE)
  287.                                 {
  288.                                     if(TypeOfMem((APTR)LT_GetAttributes(Handle,MsgGadget->GadgetID,TAG_DONE)))
  289.                                     {
  290.                                         UBYTE DummyBuffer[MAX_FILENAME_LENGTH];
  291.  
  292.                                         strcpy(DummyBuffer,LT_GetString(Handle,MsgGadget->GadgetID));
  293.  
  294.                                         if(MsgGadget->GadgetID < GAD_EDITOR)
  295.                                             FindDrawer(PanelWindow,DummyBuffer,TRUE,NULL);
  296.                                         else
  297.                                         {
  298.                                             if(DummyBuffer[0])
  299.                                             {
  300.                                                 if(MsgGadget->GadgetID == GAD_EDITOR)
  301.                                                     FindProgram(PanelWindow,DummyBuffer,NULL);
  302.                                                 else
  303.                                                     FindFile(PanelWindow,DummyBuffer,NULL);
  304.                                             }
  305.                                         }
  306.                                     }
  307.                                 }
  308.  
  309.                                 break;
  310.                         }
  311.                     }
  312.  
  313.                     if(MsgClass == IDCMP_IDCMPUPDATE)
  314.                     {
  315.                         LT_LockWindow(PanelWindow);
  316.  
  317.                         if(MsgGadget->GadgetID >= GAD_AUPLOAD && MsgGadget->GadgetID <= GAD_HELPFILE)
  318.                         {
  319.                             LONG    ID        = MsgGadget->GadgetID;
  320.                             STRPTR    Name    = LT_GetString(Handle,ID);
  321.  
  322.                             if(Name)
  323.                             {
  324.                                 UBYTE DummyBuffer[MAX_FILENAME_LENGTH];
  325.                                 struct FileRequester *FileRequest;
  326.                                 BOOL Saver,Drawer;
  327.  
  328.                                 strcpy(DummyBuffer,Name);
  329.  
  330.                                 Saver = FALSE;
  331.  
  332.                                 if(ID < GAD_EDITOR)
  333.                                 {
  334.                                     Drawer = TRUE;
  335.  
  336.                                     switch(ID)
  337.                                     {
  338.                                         case GAD_ADOWNLOAD:
  339.                                         case GAD_TDOWNLOAD:
  340.                                         case GAD_BDOWNLOAD:
  341.  
  342.                                             Saver = TRUE;
  343.                                             break;
  344.                                     }
  345.                                 }
  346.                                 else
  347.                                     Drawer = FALSE;
  348.  
  349.                                 if(Drawer)
  350.                                 {
  351.                                     if(Saver)
  352.                                         FileRequest = SaveDrawer(PanelWindow,LocaleString(ID - GAD_AUPLOAD + MSG_PATHPANEL_SELECT_DEFAULT_ASCII_UPLOAD_PATH_TXT),LocaleString(MSG_GLOBAL_SELECT_TXT),DummyBuffer,sizeof(DummyBuffer));
  353.                                     else
  354.                                         FileRequest = OpenDrawer(PanelWindow,LocaleString(ID - GAD_AUPLOAD + MSG_PATHPANEL_SELECT_DEFAULT_ASCII_UPLOAD_PATH_TXT),LocaleString(MSG_GLOBAL_SELECT_TXT),DummyBuffer,sizeof(DummyBuffer));
  355.                                 }
  356.                                 else
  357.                                     FileRequest = OpenSingleFile(PanelWindow,LocaleString(ID - GAD_AUPLOAD + MSG_PATHPANEL_SELECT_DEFAULT_ASCII_UPLOAD_PATH_TXT),LocaleString(MSG_GLOBAL_SELECT_TXT),NULL,DummyBuffer,sizeof(DummyBuffer));
  358.  
  359.                                 if(FileRequest)
  360.                                 {
  361.                                     FreeAslRequest(FileRequest);
  362.  
  363.                                     if(Drawer)
  364.                                         FindDrawer(PanelWindow,DummyBuffer,TRUE,NULL);
  365.                                     else
  366.                                     {
  367.                                         if(ID == GAD_EDITOR)
  368.                                             FindProgram(PanelWindow,DummyBuffer,NULL);
  369.                                         else
  370.                                             FindFile(PanelWindow,DummyBuffer,NULL);
  371.                                     }
  372.  
  373.                                     LT_SetAttributes(Handle,ID,
  374.                                         GTST_String,DummyBuffer,
  375.                                     TAG_DONE);
  376.                                 }
  377.                             }
  378.                         }
  379.  
  380.                         LT_UnlockWindow(PanelWindow);
  381.                     }
  382.                 }
  383.             }
  384.             while(!Done);
  385.  
  386.             PopWindow();
  387.         }
  388.  
  389.         LT_DeleteHandle(Handle);
  390.     }
  391.  
  392.     if(UseIt)
  393.     {
  394.         if(Config->MiscConfig->ProtectiveMode && !PrivateConfig->TransferConfig->OverridePath)
  395.         {
  396.             STRPTR    Library    = NULL,
  397.                     Path    = NULL;
  398.  
  399.             if(PrivateConfig->TransferConfig->DefaultType == XFER_XPR && PrivateConfig->TransferConfig->DefaultLibrary[0])
  400.             {
  401.                 Library    = PrivateConfig->TransferConfig->DefaultLibrary;
  402.                 Path    = PrivateConfig->PathConfig->BinaryDownloadPath;
  403.             }
  404.  
  405.             if(PrivateConfig->TransferConfig->ASCIIDownloadType == XFER_XPR && PrivateConfig->TransferConfig->ASCIIDownloadLibrary[0])
  406.             {
  407.                 Library    = PrivateConfig->TransferConfig->ASCIIDownloadLibrary;
  408.                 Path    = PrivateConfig->PathConfig->ASCIIDownloadPath;
  409.             }
  410.  
  411.             if(PrivateConfig->TransferConfig->TextDownloadType == XFER_XPR && PrivateConfig->TransferConfig->TextDownloadLibrary[0])
  412.             {
  413.                 Library    = PrivateConfig->TransferConfig->TextDownloadLibrary;
  414.                 Path    = PrivateConfig->PathConfig->TextDownloadPath;
  415.             }
  416.  
  417.             if(PrivateConfig->TransferConfig->BinaryDownloadType == XFER_XPR && PrivateConfig->TransferConfig->BinaryDownloadLibrary[0])
  418.             {
  419.                 Library    = PrivateConfig->TransferConfig->BinaryDownloadLibrary;
  420.                 Path    = PrivateConfig->PathConfig->BinaryDownloadPath;
  421.             }
  422.  
  423.             if(Library && Path)
  424.             {
  425.                 UBYTE LocalBuffer[MAX_FILENAME_LENGTH];
  426.  
  427.                 if(*Path == 0)
  428.                 {
  429.                     if(LocalGetCurrentDirName(LocalBuffer,sizeof(LocalBuffer)))
  430.                         Path = LocalBuffer;
  431.                 }
  432.  
  433.                 if(ShowRequest(Window,LocaleString(MSG_XPR_PATH_TXT),LocaleString(MSG_GLOBAL_YES_NO_TXT),Library,Path))
  434.                     PrivateConfig->TransferConfig->OverridePath = TRUE;
  435.             }
  436.         }
  437.     }
  438.  
  439.     if(UseIt)
  440.         SwapConfig(LocalConfig,PrivateConfig);
  441.     else
  442.         SaveConfig(LocalConfig,PrivateConfig);
  443.  
  444.     return(UseIt);
  445. }
  446.